package com.yanjiali.service;

import com.yanjiali.entity.Article;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yanjiali.model.R;
import com.yanjiali.model.req.*;
import com.yanjiali.model.resp.*;

/**
 * @Package: com.yanjiali.service
 * @Author: yanjiali
 * @Created: 2025/4/14 20:54
 * 文章操作业务接口
*/
public interface ArticleService extends IService<Article>{

    /**
     * 文章上传
     * @param articleUploadReq
     * @return
     */
    R<ArticleUploadResp> articleUpload(ArticleUploadReq articleUploadReq);

    /**
     * 文章分页条件查询
     * @param articlePagingConditionQueryReq
     * @return
     */
    R<ArticlePagingConditionQueryResp> articlePagingConditionQuery(ArticlePagingConditionQueryReq articlePagingConditionQueryReq);

    /**
     * 文章修改
     * @param articleUpdateReq
     * @return
     */
    R<ArticleUpdateResp> articleUpdate(ArticleUpdateReq articleUpdateReq);

    /**
     * 通过id获取文章（需要作者本人）
     * @param getByIdArticleReq
     * @return
     */
    R<GetByIdArticleResp> getByIdArticle(GetByIdArticleReq getByIdArticleReq);

    /**
     * 文章删除
     * @param articleDeleteRep
     * @return
     */
    R<ArticleDeleteResp> articleDelete(ArticleDeleteRep articleDeleteRep);

    /**
     * 通过id获取文章（无需作者本人）
     * @param articleId
     * @return
     */
    R<GetByIdArticleNoNeedAuthorResp> getByIdArticleNoNeedAuthor(Long articleId);

    /**
     * 文章点赞操作
     * @param likeArticleReq
     * @return
     */
    R<LikeArticleResp> likeArticle(LikeArticleReq likeArticleReq);

    /**
     * 文章收藏操作
     * @param updateArticleCollectNumReq
     * @return
     */
    R<UpdateArticleCollectNumResp> updateArticleCollectNum(UpdateArticleCollectNumReq updateArticleCollectNumReq);
}
